const ChatSource = HAVE_TP ? GObject.registerClass(
class ChatSource extends MessageTray.Source {
- _init(account, conn, channel, contact, client) {
+ constructor(account, conn, channel, contact, client) {
+ const appId = account.protocol_name === 'irc'
+ ? 'org.gnome.Polari'
+ : 'empathy';
+ const policy =
+ new MessageTray.NotificationApplicationPolicy(appId);
+
+ super({policy});
+
this._account = account;
this._contact = contact;
this._client = client;
- super._init();
-
this._pendingMessages = [];
this._conn = conn;
this.pushNotification(this._notification);
}
- _createPolicy() {
- if (this._account.protocol_name === 'irc')
- return new MessageTray.NotificationApplicationPolicy('org.gnome.Polari');
- return new MessageTray.NotificationApplicationPolicy('empathy');
- }
-
createBanner() {
this._banner = new ChatNotificationBanner(this._notification);
const ExtensionUpdateSource = GObject.registerClass(
class ExtensionUpdateSource extends MessageTray.Source {
- _init() {
- let appSys = Shell.AppSystem.get_default();
- this._app = appSys.lookup_app('org.gnome.Extensions.desktop');
- if (!this._app)
- this._app = appSys.lookup_app('com.mattjakeman.ExtensionManager.desktop');
-
- super._init({
- title: this._app.get_name(),
- icon: this._app.get_icon(),
+ constructor() {
+ const appSys = Shell.AppSystem.get_default();
+ const app =
+ appSys.lookup_app('org.gnome.Extensions.desktop') ||
+ appSys.lookup_app('com.mattjakeman.ExtensionManager.desktop');
+
+ super({
+ title: app.get_name(),
+ icon: app.get_icon(),
+ policy: MessageTray.NotificationPolicy.newForApp(app),
});
- }
- _createPolicy() {
- return new MessageTray.NotificationApplicationPolicy(this._app.id);
+ this._app = app;
}
open() {
export const FdoNotificationDaemonSource = GObject.registerClass(
class FdoNotificationDaemonSource extends MessageTray.Source {
- _init(title, pid, sender, appId) {
- this.pid = pid;
- this.initialTitle = title;
- this.app = this._getApp(appId);
- this._appIcon = null;
+ constructor(title, pid, sender, appId) {
+ const appSys = Shell.AppSystem.get_default();
+ let app;
+
+ app = Shell.WindowTracker.get_default().get_app_from_pid(pid);
+ if (!app && appId)
+ app = appSys.lookup_app(`${appId}.desktop`);
+
+ if (!app)
+ app = appSys.lookup_app(`${title}.desktop`);
// Use app name as title if available, instead of whatever is provided
// through libnotify (usually garbage)
- super._init({
- title: this.app?.get_name() ?? title,
+ super({
+ title: app?.get_name() ?? title,
+ policy: MessageTray.NotificationPolicy.newForApp(app),
});
+ this.pid = pid;
+ this.initialTitle = title;
+ this.app = app;
+ this._appIcon = null;
+
+
if (sender) {
this._nameWatcherId = Gio.DBus.session.watch_name(sender,
Gio.BusNameWatcherFlags.NONE,
}
}
- _createPolicy() {
- if (this.app && this.app.get_app_info()) {
- let id = this.app.get_id().replace(/\.desktop$/, '');
- return new MessageTray.NotificationApplicationPolicy(id);
- } else {
- return new MessageTray.NotificationGenericPolicy();
- }
- }
-
_onNameVanished() {
// Destroy the notification source when its sender is removed from DBus.
// Only do so if this.app is set to avoid removing "notify-send" sources, senders
this.showNotification(notification);
}
- _getApp(appId) {
- const appSys = Shell.AppSystem.get_default();
- let app;
-
- app = Shell.WindowTracker.get_default().get_app_from_pid(this.pid);
- if (app != null)
- return app;
-
- if (appId)
- app = appSys.lookup_app(`${appId}.desktop`);
-
- if (!app)
- app = appSys.lookup_app(`${this.initialTitle}.desktop`);
-
- return app;
- }
-
open() {
this.openApp();
this.destroyNonResidentNotifications();
export const GtkNotificationDaemonAppSource = GObject.registerClass(
class GtkNotificationDaemonAppSource extends MessageTray.Source {
- _init(appId) {
- let objectPath = objectPathFromAppId(appId);
+ constructor(appId) {
+ const objectPath = objectPathFromAppId(appId);
if (!GLib.Variant.is_object_path(objectPath))
throw new InvalidAppError();
- let app = Shell.AppSystem.get_default().lookup_app(`${appId}.desktop`);
+ const app = Shell.AppSystem.get_default().lookup_app(`${appId}.desktop`);
if (!app)
throw new InvalidAppError();
- this._appId = appId;
- this._app = app;
- this._objectPath = objectPath;
-
- super._init({
+ super({
title: app.get_name(),
icon: app.get_icon(),
+ policy: new MessageTray.NotificationApplicationPolicy(appId),
});
+ this._appId = appId;
+ this._app = app;
+ this._objectPath = objectPath;
+
this._notifications = {};
this._notificationPending = false;
}
- _createPolicy() {
- return new MessageTray.NotificationApplicationPolicy(this._appId);
- }
-
_createApp() {
return new Promise((resolve, reject) => {
new FdoApplicationProxy(Gio.DBus.session,
const WindowAttentionSource = GObject.registerClass(
class WindowAttentionSource extends MessageTray.Source {
- _init(app, window) {
- this._window = window;
- this._app = app;
-
- super._init({
- title: this._app.get_name(),
- icon: this._app.get_icon(),
+ constructor(app, window) {
+ super({
+ title: app.get_name(),
+ icon: app.get_icon(),
+ policy: MessageTray.NotificationPolicy.newForApp(app),
});
+ this._window = window;
this._window.connectObject(
'notify::demands-attention', this._sync.bind(this),
'notify::urgent', this._sync.bind(this),
this.destroy();
}
- _createPolicy() {
- if (this._app && this._app.get_app_info()) {
- let id = this._app.get_id().replace(/\.desktop$/, '');
- return new MessageTray.NotificationApplicationPolicy(id);
- } else {
- return new MessageTray.NotificationGenericPolicy();
- }
- }
-
destroy(params) {
this._window.disconnectObject(this);